#include "ScnsLcd.c.h"

#if defined(SCNS_LCD_ENABLE)&&SCNS_LCD_ENABLE==1

#include "ScnsSt7789.h"
#include "ScnsSt7735.h"

#if defined(SCNS_ST7789_ENABLE)&&SCNS_ST7789_ENABLE==1
ScnsLcdStatus scnsBspLcdInit(void)
{
    if(scnsSt7789Init(SCNS_ST7789_1)!=SCNS_ST7789_STATUS_OK)
        return SCNS_LCD_STATUS_BSP_FAILED;
    return SCNS_LCD_STATUS_OK;
}
ScnsLcdStatus scnsBspLcdPostInit(void)
{
    return SCNS_LCD_STATUS_OK;
}
Point scnsBspLcdGetBorder(void)
{
    return scnsSt7789GetBorder(SCNS_ST7789_1);
}

void scnsBspLcdSetBackgroundLight(ScnsLcdBackgroundLightStatus status)
{
    scnsSt7789SetBackgroundLight(SCNS_ST7789_1,status);
}
uint8 scnsBspLcdCacheFlush(Point plu,Point prd,ScnsLcdColor*buf,uint32 n,uint8 bufId)
{
    return scnsSt7789Flush(SCNS_ST7789_1,plu,prd,buf,n,bufId);
}

uint8 scnsBspLcdSetAddress(Point plu,Point prd)
{
    return scnsSt7789SetAddress(SCNS_ST7789_1,plu,prd);
}

void scnsBspLcdWriteColor(ScnsLcdColor color)
{
    scnsSt7789WriteColorRGB565(SCNS_ST7789_1,color);
}
#endif

#if defined(SCNS_ST7735_ENABLE)&&SCNS_ST7735_ENABLE==1

ScnsLcdStatus scnsBspLcdInit(void)
{
    if(scnsSt7735Init(SCNS_ST7735_1)!=SCNS_ST7735_STATUS_OK)
        return SCNS_LCD_STATUS_BSP_FAILED;
    return SCNS_LCD_STATUS_OK;
}

Point scnsBspLcdGetBorder(void)
{
    return scnsSt7735GetBorder(SCNS_ST7735_1);
}

void scnsBspLcdSetBackgroundLight(ScnsLcdBackgroundLightStatus status)
{
    scnsSt7735SetBackgroundLight(SCNS_ST7735_1,status);
}

uint8 scnsBspLcdCacheFlush(Point plu,Point prd,ScnsLcdColor*buf,uint32 n,uint8 bufId)
{
    return scnsSt7735Flush(SCNS_ST7735_1,plu,prd,buf,n,bufId);
}

uint8 scnsBspLcdSetAddress(Point plu,Point prd)
{
    return scnsSt7735SetAddress(SCNS_ST7735_1,plu,prd);
}

void scnsBspLcdWriteColor(ScnsLcdColor color)
{
    scnsSt7735WriteColorRGB565(SCNS_ST7735_1,color);
}

#endif

ScnsLcdStatus scnsBspLcdFill(ScnsLcdColor*src,Point plu,int16 w,int16 h,ScnsLcdColor color,uint8 merge)
{
    return SCNS_LCD_STATUS_NOT_SUPPORT;
}

ScnsLcdStatus scnsBspLcdDisplayArrayImage(ScnsLcdColor*src,Point plu,const void*p,ScnsColorFormat format,const ScnsColorArgb8888*cult,int16 w,int16 h,int16 disW,int16 disH,uint8 merge)
{
    return SCNS_LCD_STATUS_NOT_SUPPORT;
}

ScnsLcdStatus scnsBspLcdMergerLayer(Point border,ScnsLcdColor*fgPtr,ScnsLcdColor*bgPtr,ScnsLcdColor*ouPtr,Point plu,Point prd)
{
    return SCNS_LCD_STATUS_NOT_SUPPORT;
}

void scnsBspLcdWait(void)
{
}

#endif